/**
 * mari和shiny
 *
 *
 */

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 这里我们使用 map 保存 s h y 的信息
 * 这里我们一遇到就总结, 不用等到最后面在总结
 * 首先遇到 s 就 使 Map 中存储的数量加一
 * 要是 遇到 h 就总结之前遇到的 s 看看可以组成多少个 sh
 * 但是再次遇到 h 我们该怎么办, 那么我们就将上一次的 sh 一起加
 * 上, 表示到这个位置了, 前面的 sh 有多少个, 遇到 y 也就和 h
 * 一样了, 这里要注意结果是否会超出 int 的最大范围, 这肯定是有可能的
 * 于是我们需要使用 long
 * 时间复杂度 : O(n)
 * 空间复杂度 : O(1)
 */

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        // 将字符串转化为数组
        char[] nums = in.next().toCharArray();

        // Map 记录 s h y 现有的个数
        Map<Character, Long> hash = new HashMap<>();

        // 初始化
        hash.put('s', 0l);
        hash.put('h', 0l);
        hash.put('y', 0l);

        // 开始遍历
        for (int i = 0; i < n; i++) {
            if (nums[i] == 's') {
                hash.put('s', hash.get('s') + 1);
            } else if (nums[i] == 'h') {
                hash.put('h', hash.get('s') + hash.get('h'));
            } else if (nums[i] == 'y') {
                hash.put('y', hash.get('h') + hash.get('y'));
            }
        }

        // 返回最终的 y 个数
        System.out.println(hash.get('y'));
    }
}